iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 2
0
DevOps

Cloud Native 開發維運一條龍系列 第 2

Day 2. 不可變基礎設施 (Immutable Infrastructure) 與容器 (Container)

  • 分享至 

  • xImage
  •  

接下來,我們會大量使用 Docker ,相信讀者都對這種基於 lxc 的容器 (container) 技術都有相當的熟悉度,所以我們不會說太多,今天來聊聊使用 Docker 的原因、Docker 的生態系,以及為什麼 Docker 適合雲原生的開發。要了解 Docker 的歷史,首先要來看一張圖


圖片來源[註1]

對我來說,使用 Docker 最大的好處,是這種技術讓 Immutable Infrastructure [註2]的概念容易被實現。直觀的來說,當生產環境的代碼被部署的時候,我們不希望再把手伸進去做任何改動,如果必須要改動,必須帶有版本管理。也就是說當我必須部署新的生產代碼時,我可以基於對某個二進位映象檔(image)進行抽換,而不是對於代碼 incremental 的改動,同理,如果要回復到之前的版本,也是基於 image 的抽換。由於容器的啟閉速度遠比虛擬機器來得快,也讓不可變基礎設施的理想變得實際。這樣的世界看起來很美好,代碼有版本管理,映象檔有版本管理,部署應用看起來堅不可破,然而,魔鬼藏在細節裡,除了要考慮雲原本的平台供應商(Cloud Provider)的基礎建設強度,與可遷移性之外,不同部署環境的配置檔管理(Configuration Management),往往容易成為部署失敗的 Root Cause,相信有在生產環境工作過的開發或運維人員,一定能深切理解那種痛苦,這個我們後面再說。

容器本身並不是什麼全新的技術,一直到 dotCloud 把它發揚光大,一下子熱門起來。就我所知,還是有不少團隊仍然用 VM 在部署單體應用 (Monolithic application) ,必須注意的是,並不是微服務 (Micro Services) 就一定會使用 Docker 來包裝各個組件,就微服務而言,有其它框架可以選擇,像是 Java 系,Dubbo、Spring Cloud、Netflix OSS...etc ,關於架構的演進如果展開下去,會是很大的篇幅,我們放在補充資料讓讀者自行深究。


圖片來源[註3]

總結一下,雲原生時代的架構下,我們可以基於容器與雲原生基礎建設(Kubernetes 已經成為雲原生基礎建設事實上的標準),快速地搭建混合異質語言寫出來的微服務。進一步地說,在各項基礎建設的協助下,各種應用的 Scale-Out、Self-Healing ,都變得相當容易。

Reference

  1. https://www.netadmin.com.tw/netadmin/zh-tw/feature/1DB50AE57AC1401F98C641366F8D0720
  2. https://blog.chef.io/2014/06/23/immutable-infrastructure-practical-or-not/
  3. https://www.servicemesher.com/blog/201909-build-full-micro-service-platform-by-spring-boot-with-kubernetes/

上一篇
Day 1. Overview
下一篇
Day 3. Web App 架構的套路與自由度
系列文
Cloud Native 開發維運一條龍18
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言